package com.ssy.lingxi.after.sale.service;

import com.ssy.lingxi.after.sale.entity.ReturnGoodsDO;
import com.ssy.lingxi.after.sale.model.vo.request.ReturnGoodsDetailPageVO;
import com.ssy.lingxi.after.sale.model.vo.request.ReturnGoodsDetailSetStatusVO;
import com.ssy.lingxi.after.sale.model.vo.response.ReturnGoodsDetailAppQueryVO;
import com.ssy.lingxi.after.sale.model.vo.response.ReturnGoodsDetailQueryVO;
import com.ssy.lingxi.after.sale.model.vo.response.ReturnGoodsRefundVO;
import com.ssy.lingxi.after.sale.model.vo.response.ReturnGoodsStatisticsVO;
import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;

import java.util.List;

/**
 * 售后退货商品服务接口
 * @author 伍将
 * @date 2020/9/10
 * @version 2.0.0
 */
public interface IReturnGoodsDetailService {

    /**
     * 分页查询退货商品
     * @author 伍将
     * @date 2020/9/10
     * @param pageVO: 
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.response.ReturnedGoodsQueryVO>>
     **/
    Wrapper<PageData<ReturnGoodsDetailQueryVO>> pageList(UserLoginCacheDTO loginUser,ReturnGoodsDetailPageVO pageVO);

    /**
     * App端分页查询退货商品
     * @author 伍将
     * @date 2021/3/18
     * @param pageVO: 分页请求参数
     * @return 操作结果
     **/
    Wrapper<PageData<ReturnGoodsDetailAppQueryVO>> pageListByApp(ReturnGoodsDetailPageVO pageVO);

    /**
     * 设置需要退货
     * @author 伍将
     * @date 2020/9/25
     * @param user:
     * @param setStatusVO:
     * @return com.ssy.lingxi.common.response.Wrapper
     **/
    Wrapper<Void> setNeedReturnGoods(UserLoginCacheDTO user, ReturnGoodsDetailSetStatusVO setStatusVO);

    /**
     * 采购商获取退货统计
     * @author 伍将
     * @date 2020/10/19
     * @param pageVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.response.ReturnGoodsStatisticsVO>>
     **/
    Wrapper<PageData<ReturnGoodsStatisticsVO>> pageStatisticsByConsumer(ReturnGoodsDetailPageVO pageVO);

    /**
     * 供应商商获取退货统计
     * @author 伍将
     * @date 2020/10/19
     * @param pageVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.response.ReturnGoodsStatisticsVO>>
     **/
    Wrapper<PageData<ReturnGoodsStatisticsVO>> pageStatisticsBySupplier(ReturnGoodsDetailPageVO pageVO);

    /**
     * 采购商分页查询退款
     * @author 伍将
     * @date 2020/10/19
     * @param pageVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.response.ReturnGoodsRefundVO>>
     **/
    Wrapper<PageData<ReturnGoodsRefundVO>> pageRefundByConsumer(ReturnGoodsDetailPageVO pageVO);

    /**
     * 供应商分页查询退款
     * @author 伍将
     * @date 2020/10/19
     * @param pageVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.response.ReturnGoodsRefundVO>>
     **/
    Wrapper<PageData<ReturnGoodsRefundVO>> pageRefundBySupplier(ReturnGoodsDetailPageVO pageVO);

    /***
     * 获取退款列表
     * @author 伍将
     * @date 2020/12/5
     * @param returnId:
     * @return:
     **/
    List<ReturnGoodsRefundVO> getDetailList(UserLoginCacheDTO user, ReturnGoodsDO returnDO, Long returnId);
}
